package com.ttxs.uaa.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ttxs.uaa.entity.SysMenu;
import com.ttxs.uaa.vo.TreeNode;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 * 菜单权限表 服务类
 * </p>
 *
 * @author 天天向上
 * @since 2021-07-26
 */
public interface ISysMenuService extends IService<SysMenu> {
    /**
     * 获取公用的菜单
     * @return
     */
    List<SysMenu> getCommonMenus();

    /**
     * 根据角色名称获取菜单集合
     * @param roleNames
     * @return
     */
    List<SysMenu> getMenus(String platformId, String roleNames);
    /**
     * 获取平台菜单集合，包括公共菜单
     * @param platformId
     * @return
     */
    List<SysMenu> getMenus(String platformId);

    /**
     * 根据角色名生成菜单树，简化前端代码
     * @param roleNames
     * @return
     */
    List<TreeNode> getMenuTree(String platformId, String roleNames);

    /**
     * 根据平台ID生成菜单树，简化前端授权代码(需要显示平台所有菜单)
     * @param platformId
     * @return
     */
    List<TreeNode> getMenuTree(String platformId);

    @Transactional(rollbackFor = Exception.class)
    void authorize(String platformId, String roleName, String checkedMenuIds);

    long[] getCheckedKey(String platformId, String roleName);
}
